// 闭包：函数内部return 函数，函数内仍然调用外层函数内部变量。
// 作用： 变量私有化
// var teacher = {
//   name: '张三',
//   age: 32,
//   sex: 'male',
//   height: 176,
//   weight: 130,
//   teacher: function(){
//     console.log('i am teacher');
//   },
//   smoke: function(){
//     console.log('i am smoking');
//   },
//   eat: function() {
//     console.log('i am having dinner');
//   }
// }
// // 查
// console.log(teacher.name);
// console.log(teacher.teacher);
// // 增
// teacher.address = '北京'
// teacher.drink = function () {
//   console.log('i am drinking beer');
// }
// console.log(teacher.address);
// console.log(teacher);
// // 改
// teacher.height = 180
// console.log(teacher.height);
// // 删
// delete teacher.address
// delete teacher.eat
// console.log(teacher);


// 构造函数 大驼峰
function Teacher() {
  this.name = '张三',
  this.sex = 'male',
  this.smoke = function () {
    console.log('i am smoking');
  }
}
let zs = new Teacher()
console.log(zs);
console.log(zs.name);
zs.smoke()

// new 出来的对象都是独立的,互不影响
// 传参数尽量用对象，可以通过属性查参数，封装做组件都用得到